﻿//************************//
//tab菜单v1.0
//使用了jquery库
//************************//
function Menu1UC(containerID)
{
	if(containerID)
		this.Container= $("#"+containerID);
	else
		this.Container=$(document.body);	
		
	this.FirstItemList=new Array(); //第1级菜单选项列表
	this.FirstChildList=new Array(); //第1级菜单的子栏目列表
	this.CurrentItem=null; //当前处于选择状态的选项
	this.CurrentNode=null; //当前处于选择状态的二级菜单节点
	this.CurrentSecondItem=null; //当前处于选择状态的二级菜单选项
	
	var me=this;
	//创建页面元素
	//总框架
	this.box = $("<div class='menu1_Box'></div>");
	this.Container.append(this.box);	
	
	//一级菜单容器
	this.FirstMenu = $("<div class='menu1_firstStep'></div>");
	this.box.append(this.FirstMenu);	
	//二级菜单容器
	this.SecondMenu = $("<div class='menu1_secondStep'></div>");
	this.box.append(this.SecondMenu);	
}

//添加菜单选项
//id编号,title标题,url连接地址,parentID上级编号
Menu1UC.prototype.AddItem=function(id,title,url,parentID,target)
{	
	//添加菜单选项	
	if(parentID=="-1")
	{
		//属于1级菜单
		var mItem=new Menu1UC_Item(id,title,url,null,target);
		this.FirstItemList[this.FirstItemList.length]=mItem;
		this.FirstMenu.append(mItem.MenuItem);
		this.BindFirstItem(mItem);
	}
	else
	{
		//查找是否有对应的1级菜单节点作为父节点
		var itemParent=this.FindFrom_FirstItemList(parentID);
		if(!itemParent)
		{
			//找不到就添加在一级菜单
			var mItem=new Menu1UC_Item(id,title,url,null,target);
			this.FirstItemList[this.FirstItemList.length]=mItem;
			this.FirstMenu.append(mItem.MenuItem);
			this.BindFirstItem(mItem);
		}
		else
		{
			//找到就再查找是否有对应的二级菜单节点
			var secondNode=this.FindFrom_FirstChildList(parentID);
			if(!secondNode)
			{
				//找不到就创建一个
				secondNode=new Menu1UC_Node(parentID);
				this.FirstChildList[this.FirstChildList.length]=secondNode;
				this.SecondMenu.append(secondNode.ListBox);
			}
			secondNode.AddItem(id,title,url,itemParent,target);	
			if(secondNode.ItemList.length>0)this.BindSecondItem(secondNode.ItemList[secondNode.ItemList.length-1]);
		}
	}
}
Menu1UC.prototype.BindFirstItem=function(mItem)
{
	var me=this;
	//为选项绑定函数
	mItem.MenuItem.click(function(){
		me.SelectFirstByID(mItem.ID);
		this.blur();
	});
}

Menu1UC.prototype.BindSecondItem=function(mItem)
{
	var me=this;
	//为选项绑定函数
	mItem.MenuItem.click(function(){
		if(me.CurrentSecondItem){me.CurrentSecondItem.MenuItem.attr("class","");}
		mItem.MenuItem.attr("class","menu1_selectedItem");
		me.CurrentSecondItem=mItem;
	});
}


Menu1UC.prototype.FindFrom_FirstItemList=function(ID)
{	
	for(var i=0;i<this.FirstItemList.length;i++)
	{
		var mItem=this.FirstItemList[i];
		if(ID==mItem.ID)
		{
			return mItem;
		}
	}
	return null;
}
Menu1UC.prototype.FindFrom_FirstItemListByUrl=function(url)
{	
	for(var i=0;i<this.FirstItemList.length;i++)
	{		
		var mItem=this.FirstItemList[i];	
		var reg=new RegExp(mItem.Url.replace(/\.\.\//g,"").replace(/\./g,"\\.").replace(/\//g,"\\\/"));		
		if(reg.test(url))
		{
			return mItem;
		}
	}
	return null;
}
Menu1UC.prototype.FindFrom_FirstChildList=function(parentID)
{
	for(var i=0;i<this.FirstChildList.length;i++)
	{
		var mItem=this.FirstChildList[i];
		if(parentID==mItem.ParentID)
		{
			return mItem;
		}
	}
	return null;
}

Menu1UC.prototype.SelectFirstByID=function(id)
{
	if(this.CurrentNode){this.CurrentNode.Hidden();}
	var secondNode=this.FindFrom_FirstChildList(id);
	if(secondNode){secondNode.Display();}
	this.CurrentNode=secondNode;			
	
	var mItem=this.FindFrom_FirstItemList(id);
	if(mItem)
	{
		if(this.CurrentItem){this.CurrentItem.MenuItem.attr("class","");}
		mItem.MenuItem.attr("class","menu1_selectedItem");
		this.CurrentItem=mItem;
	}
}

Menu1UC.prototype.SelectNodeByID=function(id)
{
	if(this.CurrentSecondItem){this.CurrentSecondItem.MenuItem.attr("class","");}
	var mItem=null;
	for(var i=0;i<this.FirstChildList.length;i++)
	{
		var mNode=this.FirstChildList[i];
		mItem=mNode.FindFrom_ItemList(id);
		if(mItem)break;
	}
	if(mItem)
	{
		mItem.MenuItem.attr("class","menu1_selectedItem");
		this.CurrentSecondItem=mItem;
	}
}

Menu1UC.prototype.SelectNodeByUrl=function(url)
{
	var mItem=null;
	for(var i=0;i<this.FirstChildList.length;i++)
	{
		var mNode=this.FirstChildList[i];
		mItem=mNode.FindFrom_ItemListByUrl(url);
		if(mItem)break;
	}
	
	if(mItem)
	{
		this.SelectFirstByID(mItem.Parent.ID);
		this.SelectNodeByID(mItem.ID);
		return;
	}
	
	mItem=this.FindFrom_FirstItemListByUrl(url);
    if(mItem)this.SelectFirstByID(mItem.ID);
}

//************************//
//节点容器
//************************//
function Menu1UC_Node(parentID)
{
	this.ParentID=parentID;
	//创建菜单选项
	this.ListBox = $("<div class='menu1_secondList'></div>");
	this.ItemList=new Array(); //第2级菜单选项列表
	this.Hidden();
}
Menu1UC_Node.prototype.AddItem=function(id,title,url,parent,target)
{
	var mItem=new Menu1UC_Item(id,title,url,parent,target);
	this.ItemList[this.ItemList.length]=mItem;
	this.ListBox.append(mItem.MenuItem);	
}
Menu1UC_Node.prototype.Display=function(){this.ListBox.css("display","block");}
Menu1UC_Node.prototype.Hidden=function(){this.ListBox.css("display","none");}
Menu1UC_Node.prototype.FindFrom_ItemList=function(ID)
{
	for(var i=0;i<this.ItemList.length;i++)
	{
		var mItem=this.ItemList[i];
		if(ID==mItem.ID)
		{
			return mItem;
		}
	}
	return null;
}
Menu1UC_Node.prototype.FindFrom_ItemListByUrl=function(url)
{	
	for(var i=0;i<this.ItemList.length;i++)
	{		
		var mItem=this.ItemList[i];	
		var reg=new RegExp(mItem.Url.replace(/\.\.\//g,"").replace(/\./g,"\\.").replace(/\//g,"\\\/"));		
		if(reg.test(url))
		{
			return mItem;
		}
	}
	return null;
}


//************************//
//菜单选项对像
//************************//
function Menu1UC_Item(id,title,url,parent,target,frame)
{
	this.ID=id;
	this.Title=title;
	this.Url=url;
	this.Parent=parent;
	
	//创建菜单选项
	this.MenuItem = $("<a><span class='itemTextSpan'>"+title+"</span></a>");
	this.MenuItem.attr("target",target);	
	this.MenuItem.attr("href",this.Url);
		
	this.MenuTable= $("<table><tbody><tr></tr></tbody></table>");
	this.MenuItem.append(this.MenuTable);	
	
	var tr=this.MenuTable.find("tr");
	this.MenuItemLeft= $("<td class='itemLeft'></td>");
	this.MenuItemText= $("<td class='itemText'>"+this.Title+"</td>");
	this.MenuItemRight= $("<td class='itemRight'></td>");
	tr.append(this.MenuItemLeft);	
	tr.append(this.MenuItemText);	
	tr.append(this.MenuItemRight);	
}